package com.campus.secondhand.entity;

import java.math.BigDecimal;
import java.time.LocalDateTime;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;

import lombok.Data;

/**
 * 商品实体类
 */
@Data
@TableName("products")
public class Product {
    /**
     * 商品ID，主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 商品名称
     */
    @TableField("name")
    private String name;

    /**
     * 商品价格
     */
    @TableField("price")
    private BigDecimal price;

    /**
     * 原价
     */
    @TableField("original_price")
    private BigDecimal originalPrice;

    /**
     * 商品描述
     */
    @TableField("description")
    private String description;

    /**
     * 商品成色（如：全新、9成新等）
     */
    @TableField("`condition`")
    private String condition;

    /**
     * 卖家ID，关联users表
     */
    @TableField("seller_id")
    private Long sellerId;

    /**
     * 所属学校ID，关联schools表
     */
    @TableField("school_id")
    private Long schoolId;

    /**
     * 分类ID，关联product_categories表
     */
    @TableField("category_id")
    private Long categoryId;

    /**
     * 商品位置经度
     */
    @TableField("longitude")
    private BigDecimal longitude;

    /**
     * 商品位置纬度
     */
    @TableField("latitude")
    private BigDecimal latitude;

    /**
     * 位置描述
     */
    @TableField("location_description")
    private String locationDescription;

    /**
     * 浏览次数
     */
    @TableField("views")
    private Integer views;

    /**
     * 状态：1-在售，2-已售出，3-已下架, 4-草稿箱
     */
    @TableField("status")
    private Integer status;

    /**
     * 是否删除，逻辑删除字段
     */
    @TableLogic
    @TableField("deleted")
    private Integer deleted;

    /**
     * 创建时间
     */
    @TableField("created_at")
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    @TableField("updated_at")
    private LocalDateTime updatedAt;
}